package algo.A03_递归和算法复杂度;

import util.ArrayUtil;

/**
 * 对数组元素求和
 * 找重复：每次递归求和时，要再加上下一个元素
 * 找变化：变化的量应该作为参数
 * 找出口：所有元素都访问完毕时结束
 */
public class T03_对数组元素求和 {
    public static void main(String[] args) {
        int[] arr = ArrayUtil.getRandomArr(10, -10, 10);
        ArrayUtil.print(arr);
        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
            sum += arr[i];
        }
        System.out.println("sum = " + sum);
        //开始解题
        int result = solution(arr, 0);
        System.out.println("result = " + result);
    }

    private static int solution(int[] arr, int begin) {
        //已经访问到最后一个元素时，直接返回最后一个元素的值
        if (begin == arr.length - 1) {
            return arr[begin];
        }
        return arr[begin] + solution(arr, begin + 1);
    }
}
